ইলাস্টিকসার্চ (ElasticSearch)

Pre-processing এবং Enrichment এর উদাহরণ

Latest Technologies - ইলাস্টিকসার্চ (ElasticSearch) - Elasticsearch Ingest এবং Pipelines | NCTB BOOK

Pre-processing এবং Enrichment এর উদাহরণ

Elasticsearch-এ Pre-processing এবং Enrichment হলো ডেটা ইন্ডেক্স করার আগে ডেটাকে প্রক্রিয়াজাত করা এবং অতিরিক্ত তথ্য যোগ করার প্রক্রিয়া। Ingest Node এবং Ingest Pipelines ব্যবহার করে Elasticsearch-এ ডেটা ক্লিনিং, ফরম্যাটিং, রূপান্তর এবং এনরিচমেন্ট করা যায়। নিচে Pre-processing এবং Enrichment-এর কয়েকটি বাস্তব উদাহরণ তুলে ধরা হলো:

১. Pre-processing উদাহরণ

Pre-processing হলো ডেটা ইন্ডেক্স করার আগে ডেটার গঠন পরিবর্তন করা, অপ্রয়োজনীয় ফিল্ড মুছে ফেলা, বা ফিল্ডের মান সঠিকভাবে সেট করা।

উদাহরণ ১: ফিল্ডের নাম পরিবর্তন (Rename Processor)

ধরা যাক, লগ ডেটায় "user_ip" নামে একটি ফিল্ড রয়েছে, যা ইন্ডেক্সে "client_ip" নামে সংরক্ষণ করতে হবে। Ingest Pipeline-এর মাধ্যমে এটি করা যায়:

PUT /_ingest/pipeline/rename_pipeline
{
  "description": "Rename user_ip to client_ip",
  "processors": [
    {
      "rename": {
        "field": "user_ip",
        "target_field": "client_ip"
      }
    }
  ]
}
  • এখানে rename প্রসেসর ব্যবহার করে "user_ip" ফিল্ডকে "client_ip" নামে পরিবর্তন করা হয়েছে।

উদাহরণ ২: তারিখের ফরম্যাট পরিবর্তন (Date Processor)

ধরা যাক, আমাদের একটি লগ ডেটা রয়েছে যেখানে "timestamp" ফিল্ডে তারিখ "MM/dd/yyyy HH:mm:ss" ফরম্যাটে আছে। আমরা এই তারিখকে "yyyy-MM-dd" ফরম্যাটে রূপান্তর করতে চাই।

PUT /_ingest/pipeline/date_pipeline
{
  "description": "Convert timestamp format",
  "processors": [
    {
      "date": {
        "field": "timestamp",
        "formats": ["MM/dd/yyyy HH:mm:ss"],
        "target_field": "formatted_timestamp",
        "output_format": "yyyy-MM-dd"
      }
    }
  ]
}
  • এখানে date প্রসেসর ব্যবহার করে "timestamp" ফিল্ডের ফরম্যাট পরিবর্তন করা হয়েছে এবং "formatted_timestamp" নামে একটি নতুন ফিল্ডে সংরক্ষণ করা হয়েছে।

উদাহরণ ৩: ফিল্ড মুছে ফেলা (Remove Processor)

কিছু ক্ষেত্রে অপ্রয়োজনীয় ফিল্ড ইন্ডেক্স থেকে মুছে ফেলা জরুরি হতে পারে। ধরা যাক, আমাদের ডকুমেন্টে "temporary_info" নামে একটি অপ্রয়োজনীয় ফিল্ড আছে, যা ইন্ডেক্সিং-এর সময় মুছে ফেলতে হবে।

PUT /_ingest/pipeline/remove_pipeline
{
  "description": "Remove temporary field",
  "processors": [
    {
      "remove": {
        "field": "temporary_info"
      }
    }
  ]
}
  • এখানে remove প্রসেসর ব্যবহার করে "temporary_info" ফিল্ডটি মুছে ফেলা হয়েছে।

২. Enrichment উদাহরণ

Enrichment হলো ডেটা ইনডেক্স করার সময় অতিরিক্ত তথ্য যোগ করা। এটি ডেটাকে আরও ইনফরমেটিভ এবং বিশ্লেষণের জন্য উপযুক্ত করে তোলে।

উদাহরণ ১: GeoIP তথ্য যোগ করা (GeoIP Processor)

ধরা যাক, আমাদের একটি লগ ডেটা রয়েছে যেখানে "client_ip" ফিল্ডে ব্যবহারকারীর IP ঠিকানা রয়েছে। আমরা সেই IP ঠিকানার ভিত্তিতে লোকেশন (দেশ, শহর, এবং জিপ কোড) তথ্য যোগ করতে চাই।

PUT /_ingest/pipeline/geoip_enrichment_pipeline
{
  "description": "Enrich client IP with GeoIP information",
  "processors": [
    {
      "geoip": {
        "field": "client_ip",
        "target_field": "geoip"
      }
    }
  ]
}
  • এখানে geoip প্রসেসর ব্যবহার করে "client_ip" ফিল্ড থেকে লোকেশন তথ্য বের করা হয়েছে এবং "geoip" নামে একটি ফিল্ডে সংরক্ষণ করা হয়েছে। এতে দেশ, শহর, এবং লোকেশন পয়েন্টের মতো অতিরিক্ত তথ্য অন্তর্ভুক্ত থাকবে।

উদাহরণ ২: ফিল্ড সেট করা (Set Processor)

ধরা যাক, ডেটা ইন্ডেক্স করার সময় আমরা প্রতিটি ডকুমেন্টে একটি প্রসেসিং টাইমসট্যাম্প যোগ করতে চাই, যা ডেটা কখন প্রসেস করা হয়েছে তা নির্দেশ করবে।

PUT /_ingest/pipeline/set_pipeline
{
  "description": "Set processed_at timestamp",
  "processors": [
    {
      "set": {
        "field": "processed_at",
        "value": "{{_ingest.timestamp}}"
      }
    }
  ]
}
  • এখানে set প্রসেসর ব্যবহার করে "processed_at" ফিল্ডে ইনজেস্ট টাইমসট্যাম্প যোগ করা হয়েছে, যা ইন্ডেক্সিং-এর সময় ডেটার প্রসেসিং সময় নির্দেশ করবে।

উদাহরণ ৩: টেক্সট থেকে তথ্য এক্সট্রাক্ট করা (Grok Processor)

ধরা যাক, আমাদের লগ ডেটায় "message" নামে একটি ফিল্ড আছে, যা টেক্সট আকারে লগের তথ্য সংরক্ষণ করে। আমরা সেই টেক্সট থেকে IP ঠিকানা, তারিখ, এবং ইভেন্ট টাইপ এক্সট্রাক্ট করতে চাই।

PUT /_ingest/pipeline/grok_pipeline
{
  "description": "Extract information from log message",
  "processors": [
    {
      "grok": {
        "field": "message",
        "patterns": ["%{IP:client_ip} - - \\[%{HTTPDATE:timestamp}\\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:status} %{NUMBER:bytes}"]
      }
    }
  ]
}
  • এখানে grok প্রসেসর ব্যবহার করে "message" ফিল্ড থেকে বিভিন্ন তথ্য যেমন IP ঠিকানা, লগের সময়সীমা, এবং HTTP মেথড এক্সট্রাক্ট করা হয়েছে এবং ইন্ডেক্সে যোগ করা হয়েছে।

উপসংহার

Pre-processing এবং Enrichment Elasticsearch-এ ডেটা ইন্ডেক্স করার আগে ডেটাকে প্রিপ্রোসেস এবং এনরিচ করতে ব্যবহৃত হয়। Ingest Node এবং Ingest Pipelines ব্যবহার করে ডেটার গঠন পরিবর্তন করা, অপ্রয়োজনীয় ফিল্ড মুছে ফেলা, এবং অতিরিক্ত তথ্য যোগ করা যায়। এটি ডেটা ইন্ডেক্সিং এবং সার্চ অপারেশনের কার্যকারিতা বাড়াতে সহায়ক, এবং ডেটাকে আরও ইনফরমেটিভ করে তোলে, যা ডেটা অ্যানালাইসিসের জন্য অত্যন্ত গুরুত্বপূর্ণ।

Content added By
Promotion